var express = require('express')
var router = express.Router()
var artModel = require('../models/artModel')
var userModel = require('../models/userModel')
var notifyModel = require('../models/notifyModel')
var multer  = require('multer') //上传图片的中间件
var bcrypt = require('bcryptjs')  //密码加密的中间件
var jwt = require('jsonwebtoken') //token签发与验证的中间件
 
var upload = multer({dest:'public/img'})
var store = multer.diskStorage({
    destination: function (req, file, cb) { //配置存放路径
        cb(null, 'public/img')
    },
    filename: function (req, file, cb) { //自定义文件名称
        console.log(file)
        let origname = file.originalname.split('.');
        let Len = origname.length;
        let ext = origname[Len-1];   //提取图片后缀
        let imgname = new Date().getTime()+parseInt(Math.random()*999) //生成一个绝对唯一的随机字符串，作为每个新图片的名称
        cb(null, imgname+'.'+ext)
    }
})

var upload = multer({ storage: store})

router.post('/upload',upload.single('myImg'),(req,res)=>{
    // console.log(req.file)
    res.set({
        'Access-Control-Allow-Origin':'*'
    })
    res.send({
        code:1,
        msg:'上传成功',
        data: req.file.path
    })
})

router.get('/prod/list',(req,res)=>{//跳转至表格页面并根据数据库的内容渲染页面
    // artModel.countDocuments().then((allNum)=>{
    //     let page = Math.ceil(allNum/5);
    //     let pageArr=[];
    //     for(let i=0;i<page;i++){
    //         pageArr.push(i+1)
    //     }
        artModel.find().then((result)=>{
            res.send({
                listD:result,
                // pageArr
            })
        })
    })
// })

router.post('/list',(req,res)=>{//表单新增书本内容
    console.log(req.body)
    new artModel(req.body).save().then((result)=>{
        if(result){
            res.send({
               code:1,
               msg:'发布成功' ,
               data:result
            })
        }
    })
})

router.get('/search',(req,res)=>{ //模糊查询
    console.log(req.query)
    let reg = new RegExp(req.query.str)
    artModel.find({acter:reg}).then((result)=>{
        res.send({
            code:1,
            msg:'查询成功',
            data:result
        })
    })
})

// router.get('/notify',(req,res)=>{ //通知中心保存数据
//     new notifyModel({
//         'title':'【2】澳演员在脸书为大火筹款 6 天募集 3200 万美元创历史',
//         'intro':`北京时间 1 月 9 日早间消息，澳大利亚喜剧演员 Celeste Barber 近日通过 Facebook 筹集到了
//         3200 万美元善款，用于对抗该国愈演愈烈的森林大火，而这一筹款数量也创造了平台之最 ... `,
//         'isRead':false,
//         'cont':`北京时间 1 月 9 日早间消息，澳大利亚喜剧演员 Celeste Barber 近日通过 Facebook 筹集到了
//         3200 万美元善款，用于对抗该国愈演愈烈的森林大火，而这一筹款数量也创造了平台之最 ... `
//     }).save().then((result)=>{
//         console.log(result)
//     })
// })

router.get('/notify', function(req, res, next) {
    new notifyModel({
        'title':'【3】澳演员在脸书为大火筹款 6 天募集 3200 万美元创历史',
        'intro':`北京时间 1 月 9 日早间消息，澳大利亚喜剧演员 Celeste Barber 近日通过 Facebook 筹集到了
        3200 万美元善款，用于对抗该国愈演愈烈的森林大火，而这一筹款数量也创造了平台之最 ... `,
        'isRead':false,
        'cont':`北京时间 1 月 9 日早间消息，澳大利亚喜剧演员 Celeste Barber 近日通过 Facebook 筹集到了
      3200 万美元善款，用于对抗该国愈演愈烈的森林大火，而这一筹款数量也创造了平台之最 ... `
    }).save().then((res)=>{
      console.log(res)
    })
});
router.get('/notify/list', function(req, res, next) {//下发通知中心列表数据
    notifyModel.find().then((result)=>{
        res.send({
            code:1,
            msg:'加载成功',
            data:result
        })
    })
});

router.get('/notify/read', function(req, res, next) {//下发通知中心列表数据
    let {id}=req.query;
    notifyModel.update({_id:id},{isRead:true}).then((result)=>{
        res.send({
            code:1,
            msg:'更新成功'
        })
    })
});

router.get('/del',(req,res)=>{//删除某一条
    let {id} = req.query;
    console.log(req)
    artModel.remove({_id:id}).then((result)=>{
        res.send({
            code:1,
            msg:'删除成功'
        })
    })
})

router.get('/order', function(req, res, next) {//下发用户管理列表数据
    userModel.find().then((result)=>{
        res.send({
            code:1,
            msg:'加载成功',
            data:result
        })
    })
});

router.get('/user/del',(req,res)=>{//删除用户管理列表数据某一条
    let {id} = req.query;
    console.log(req)
    userModel.remove({_id:id}).then((result)=>{
        res.send({
            code:1,
            msg:'删除成功'
        })
    })
})

router.get('/user/search',(req,res)=>{ //模糊查询用户管理列表数据
    console.log(req.query)
    let reg = new RegExp(req.query.str)
    userModel.find({name:reg}).then((result)=>{
        res.send({
            code:1,
            msg:'查询成功',
            data:result
        })
    })
})

router.post('/reg', (req, res) => { //注册验证接口
    console.log(req.body)
    let {username,pwd} = req.body;
    userModel.find({username}).then((result)=>{
        if(result.length>0){ //如果查到了同名用户，直接返回状态码给前端
            res.send({
                code:-666,
                msg:'用户已存在'
            })
            return false
        }
        
        bcrypt.hash(pwd,10,(err,hashPwd)=>{
            if(!err){
                console.log(hashPwd)
                new userModel({
                    username,
                    pwd:hashPwd
                }).save().then((regResult)=>{
                    res.send({
                        code:1,
                        msg:'注册成功'
                    })
                })
            }
        })
    })
})

let secret = 'asjdflasjflkasjfdla';
router.post('/login',(req,res)=>{
    let {username,pwd} = req.body;
    userModel.find({username}).then((user)=>{ //验证用户是否注册过
        console.log(user)
        if(user.length==0){
            res.send({
                code:-667,
                msg:'请注册'
            })
            return false
        }
        let checkPwd = bcrypt.compareSync(pwd,user[0].pwd) //验证用户密码是否正确
        if(checkPwd){
            //登录成功后，服务端签发token
            jwt.sign({
                time:new Date().getTime(),
                end:1000*30
            },secret,(err,token)=>{
                console.log(token)
                //eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbmQiOjMwMDAwMCwiaWF0IjoxNTc1NjE2NDk0fQ.fc7JJSXWlXjHiWejD3YwxshMJkaRqz9bkDJDHuzgbdk
                if(!err){
                    res.send({
                        code: 1,
                        msg: '登录成功',
                        data:token,
                        username
                    })
                }
            })
        }else{
            res.send({
                code: 0,
                msg: '密码错误'
            })
        }
    })
})

router.get('/vip',(req,res)=>{ //访问其他敏感接口的时候判断cookie
    let { token } = req.query;
    jwt.verify(token,secret,(err,result)=>{
       if(result){
           console.log(result)
           let {time,end} = result;
           let nowTime = new Date().getTime();
           console.log(nowTime,time)
           if(nowTime-time>end){
               res.send({
                   code: 0,
                   msg: 'token已过期'
               })
           }else{
               res.send({
                   code: 1,
                   msg: '可以访问vip页面'
               })
           }
           
       }else{
           console.log('token验证失败')
       }
    })
})


module.exports = router
